package com.cdp.web.controller.system.openFeign;
import com.cdp.common.core.domain.AjaxResult;
import com.cdp.system.dto.*;
import com.cdp.system.vo.KnowledgePhotoDTO;
import com.cdp.system.vo.KnowledgePhotoVO;
import com.cdp.system.vo.ProportionDesignResult;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;


//@FeignClient(name = "python", url = "http://112.124.66.226:5001")
//@FeignClient(name = "python", url = "http://localhost:5001")
//@FeignClient(name = "python", url = "http://localhost:5001")
//@FeignClient(name = "python", url = "http://localhost:5001", configuration = FeignConfig.class)
//@FeignClient(name = "python", url = "http://112.124.66.226:5001", configuration = FeignConfig.class)
//@FeignClient(name = "python", url = "http://112.124.66.226:5001", configuration = FeignConfig.class)
//@FeignClient(name = "python", url = "http://localhost:5001", configuration = FeignConfig.class)
//@FeignClient(name = "python", url = "http://47.97.185.161:5001", configuration = FeignConfig.class)

//@FeignClient(name = "python", url = "http://47.97.185.161:5001", configuration = FeignConfig.class)
//@FeignClient(name = "python", url = "http://localhost:5001", configuration = FeignConfig.class)
//@FeignClient(name = "python", url = "http://47.97.185.161:5001", configuration = FeignConfig.class)
//@FeignClient(name = "python", url = "http://118.89.191.94:5001", configuration = FeignConfig.class)//腾讯

//@FeignClient(name = "python", url = "http://localhost:5001", configuration = FeignConfig.class)
//@FeignClient(name = "python", url = "http://47.97.185.161:5001", configuration = FeignConfig.class)
//@FeignClient(name = "python", url = "http://47.97.185.161:5001", configuration = FeignConfig.class)
//@FeignClient(name = "python", url = "http://localhost:5001", configuration = FeignConfig.class)
//@FeignClient(name = "python", url = "http://47.97.185.161:5001", configuration = FeignConfig.class)
//@FeignClient(name = "python", url = "http://47.97.185.161:5001", configuration = FeignConfig.class)
//@FeignClient(name = "python", url = "http://localhost:5001", configuration = FeignConfig.class)
//@FeignClient(name = "python", url = "http://47.97.185.161:5001", configuration = FeignConfig.class)
//@FeignClient(name = "python", url = "http://118.89.191.94:5001", configuration = FeignConfig.class)
//@FeignClient(name = "python", url = "http://47.97.185.161:5001", configuration = FeignConfig.class)
@FeignClient(name = "python", url = "http://47.97.185.161:5001", configuration = FeignConfig.class)
public interface FileClient {

    /**
     * 异常点检测
     * @param pythonUnusualDTO
     * @return
     */
    @PostMapping("/unusualDetection")
    AjaxResult unusualDetection(@RequestBody PythonUnusualDTO pythonUnusualDTO);








    /**
     * 下三角
     * @param pythonBelowNamicDTO
     * @return
     */
    @PostMapping("/below/namic")
    AjaxResult belowNamic(@RequestBody PythonBelowNamicDTO pythonBelowNamicDTO);


    /**
     * 上三角
     * @param pythonBelowNamicDTO
     * @return
     */
    @PostMapping("/upper/namic")
    AjaxResult upperNamic(@RequestBody PythonUpperNamicDTO pythonBelowNamicDTO);


    /**
     * 全三角
     */

    @PostMapping("/upper/below")
    AjaxResult upperBelow(@RequestBody PythonUpperBelowDTO pythonUpperBelowDTO);






    /**
     * 异常点检测second
     * @param pythonUnusualDTO
     * @return
     */
    @PostMapping("/unusualDetection")
    AjaxResult unusualDetectionSecond(@RequestBody PythonUnusualDTO pythonUnusualDTO);


    @PostMapping("/pca")
    AjaxResult pca(@RequestBody PcaDTO pcaDTO);

    @PostMapping("/xgb")
    AjaxResult xgb(@RequestBody XgbDTO xgbDTO);

    @PostMapping("/rf")
    AjaxResult rf(RfDTO rfDTO);


    @PostMapping("/limit/tree/second")
    AjaxResult limitTreeSecond(LimitTreeDTO limitTreeDTO);

    @PostMapping("/own/code/feature/select/second")
    AjaxResult ownCodeFeatureSelectSecond(LimitTreeDTO limitTreeDTO);


    /**
     * 集成增强模型   (模型训练)
     * @param
     * @return
     */
    @PostMapping("/integrat/enhance/second")
    AjaxResult integratEnhanceSecond(LimitTreeSecondDTO limitTreeSecondDTO);

    /**
     * 极限梯度增强树(模型优化验证)
     * @param limitTreeDTO
     * @return
     */
    @PostMapping("/limit/tree")
    AjaxResult limitTree(LimitTreeDTO limitTreeDTO);

    /**
     *集成增强模型(模型优化验证  特殊)
     * @param
     * @return
     */
    @PostMapping("/integrat/enhance")
    AjaxResult integratEnhance(LimitTreeSecondDTO limitTreeSecondDTO);


    /**
     * 自编码特征筛选模型(模型优化验证)
     * @param
     * @return
     */
    @PostMapping("/own/code/feature/select")
    AjaxResult ownCodeFeatureSelect(LimitTreeSecondDTO limitTreeSecondDTO);


    /**
     * pkl入参是模型
     * @param modelPklDTO
     * @return
     */
    @PostMapping("/modelPkl")
    AjaxResult modelPkl(ModelPklDTO modelPklDTO);

    /**性能预测模块
     *
     * @param pythonUpperBelowDTO
     * @return
     */

    @PostMapping("/predictPerformance")
    AjaxResult predictPerformance(PredictPerformanceDTO pythonUpperBelowDTO);


    @PostMapping("/predictPerformance/v2")
    AjaxResult predictPerformanceV2(PredictPerformanceDTO pythonUpperBelowDTO);




    /**
     * 配比设计模块
     * @param
     * @return
     */
    @PostMapping("/proportion/design")
    ProportionDesignResult proportionDesign(@RequestBody ProportionDesignDTO dto);





    /**
     * 配比设计模块
     * @param
     * @return
     */
    @PostMapping("/proportion/design/V2")
    ProportionDesignResult proportionDesignV2(@RequestBody ProportionDesignV2DTO dto);


    @PostMapping("/knowledge/photo")
    KnowledgePhotoVO knowledgePhoto(@RequestBody KnowledgePhotoDTO knowledgePhotoDTO);

    @PostMapping("/proportion/design/V3")
    ProportionDesignResult proportionDesignV3(ProportionDesignV2DTO proportionDesignDTO);
}
